<template>
  <div>
    <table
      border="1"
      width="700"
      style="border-collapse: collapse"
    >
      <caption>
        购物车
      </caption>
      <thead>
        <tr>
          <th>
            <input type="checkbox" v-model="isChecked"/> <span>全选</span>
          </th>
          <th>名称</th>
          <th>价格</th>
          <th>数量</th>
          <th>总价</th>
          <th>操作</th>
        </tr>
      </thead>
      <tbody>
        <ShopCar 
        v-for='(item,index) in goodList' :key='index' 
        :uname='item.name' 
        :price='item.price' 
        :num='item.num'
        :checked='item.checked' 
        :index='index'
        @del='Del'
        @change='ChangeFn'
        @changenum='NumFn'
        />
        

        
      </tbody>
      <tfoot>
        <tr>
          <td>合计:</td>
          <td colspan="5">{{AllSum}}
            
          </td>
        </tr>
      </tfoot>
    </table>
  </div>
</template>

<script>
import ShopCar from './components/ShopCar.vue'
export default {
  data() {
    return {
      goodList: [
        {
          name: "诸葛亮",
          price: 1000,
          num: 1,
          checked: false,
        },
        {
          name: "蔡文姬",
          price: 1500,
          num: 1,
          checked: false,
        },
        {
          name: "妲己",
          price: 2000,
          num: 1,
          checked: false,
        },
        {
          name: "鲁班",
          price: 2200,
          num: 1,
          checked: false,
        },
      ],
    };
  },


  components:{
    ShopCar
  },

  methods:{
   Del(index){
    this.goodList.splice(index,1)
   },
   ChangeFn(title,index){
   this.goodList[index].checked=title
   },
   NumFn(index,newnum){
    this.goodList[index].num=newnum
   }

  },

  computed:{
    AllSum(){
   return ( this.goodList.reduce((pre, item) => pre + item.price * item.num, 0) || 0
      );
      },

    isChecked:{
      get(){
       if (this.goodList.length > 0) {
          return this.goodList.every((item) => item.checked);
        } else {
          return false;
        }
      },
      set(val){
        this.goodList.forEach(item => item.checked=val)
      }
     }

    
    }

  }
;
</script>

<style>
</style>